/**
    算法描述：某点到某点的可能路径问题，该题特点是步数固定
    核心问题：路径不通时回溯到原点
    解决所需数据结构+算法：
**/
#include<iostream>
#include<cstring>
using namespace std;

int dx[4] = {0,0,1,-1};
int dy[4] = {1,-1,0,0};
int edx, edy;

bool a[110][110];
int dp[110][110][18];

int N, M, T, ans = 0;

void dfs(int x, int y, int step) {
    if(step > T)   return;
    /* if(step == T) {
        if(x==edx && y==edy)    dp[x][y][step] = 1;
        else    dp[x][y][step] = 0;
        return;
    }*/
    if(abs(edx-x) + abs(edy-y) > T-step)    return;
    for(int i=0; i<4; i++) {
        int xx = x + dx[i];
        int yy = y + dy[i];
        if(a[xx][yy] && xx>0 && yy>0 && xx<=N && yy<=M) {
            dp[xx][yy][step+1] += dp[x][y][step];
            dfs(xx, yy, step+1);
        }
    }
}

int main() {
    int stx, sty;
    cin >> N >> M >> T;
    memset(a, 0, sizeof(a));
    memset(dp, 0, sizeof(dp));
    char ch;
    for(int i=1; i<=N; i++) {
        for(int j=1; j<=M; j++) {
            cin >> ch;
            if(ch == '.')   a[i][j] = true;
            else            a[i][j] = false;
        }
    }
    cin >> stx >> sty >> edx >> edy;
    dp[stx][sty][0] = 1;
    dfs(stx, sty, 0);
    cout << dp[edx][edy][T] << endl;

    return 0;
}